The use of software patterns (“software patterns”) may improve the software development process. A software pattern may be a proven, best practice solution to a known problem within a given context. For example, a software pattern may be a general, reusable, customizable design solution to a software design problem that may take the form of a description, template, model, code sample, or other mechanism that facilitates a design solution. Different types of software patterns exist. For example, an idiom software pattern may include sections of software code, a design software pattern may include various software classes, and an architectural software pattern may provide an architectural level solution. Some software patterns are well known in the art; for example, the Model-View-Controller software pattern is a well known architectural software pattern. In many cases, a software pattern can describe relationships and interactions between classes and/or objects without specifying a final solution. Indeed, a software pattern, when instantiated, may benefit a code developer by facilitating a design solution, but the software pattern may also lend itself to customization so that the code developer can tailor the software pattern to his or her specific application.
A developer who employs and/or instantiates a software pattern within a design solution may find that, in order to fully realize the advantage of the software pattern, there may be a need to employ and/or instantiate multiple software patterns. Multiple software patterns that share a relationship may be called a software recipe. However, the application of multiple software patterns may be a complex and difficult process; it may take time, experience, and expertise to successfully analyze a design problem, choose a set of appropriate software patterns, and identify and utilize a software recipe. The successful selection and application of multiple software patterns may be more difficult than the selection and application of a single software pattern. The situation may be further complicated by the vast number of software patterns that exist.
The identification, tracking, and application of software recipes is primarily a manual process that requires a developer with considerable experience and expertise. A method and system may be employed to automate the software recipe application process and/or guide a developer during the application of one or more software recipes.